Cours - Le gestionnaire de paquet et les archives
Motivation du gestionnaire de paquet
Historiquement, c'est très compliqué d'installer un programme :
- le télécharger et le compiler
- la compilation (ou le programme lui-même) requiert des dependances
- il faut télécharger et compiler les dépendances
- qui requiert elles-mêmes des dépendances ...
Paquet =~ programmes ou librairies
Le travail d'une distribution (entre autre)
- créer et maintenir un ensemble de paquet cohérents
- ... et le gestionnaire de paquet qui va avec
- les (pre)compiler pour fournir des binaires
Le gestionnaire de paquet c'est :
- La "clef de voute" d'une distribution ?
- un système unifié pour installer des paquets ...
- ... et les mettre à jour !
- le tout en gérant les dépendances et les conflits
- et via une commaunauté qui s'assure que les logiciels ne font pas n'importe quoi.
Comparaison avec Windows
Sous Windows historiquement
- téléchargement d'un .exe par l'utilisateur ...
- ... depuis une source obscure ! (critical security risk !)
- procédure d'installation spécifique
- ... qui tente de vous refiler des toolbar bloated, et/ou des CGU obscures
- système de mise à jour spécifique
- nécessité d'installer manuellement des dépendances
Maintenant:
- le Microsoft store (hum supermarché désagréable selon moi)
- Toujours la méthode manuelle si on aime pas le store officiel
- ou Chocolatey (gestionnaire de paquet inspiré de linux sur Windows)
Sous Debian / Ubuntu et le reste de la famille
apt : couche "haut niveau"
- dépot,
- authentification,
- ...
dpkg : couche "bas niveau"
- gestion des dépendances,
- installation du paquet (
.deb), - ...
Parenthèse sur apt-get
- Historiquement,
apt-get(etapt-cache,apt-mark, ..) étaient utilisés - Syntaxe inutilement complexe ?
aptfourni une meilleur interface (UI et UX)
Utilisation de apt
apt install <package>- télécharge et installe le paquet et tout son arbre de dépendances
apt remove <package>- désinstaller le paquet (et les paquet dont il dépends !)
apt autoremove- supprime les paquets qui ne sont plus nécessaires

Mais qu'est-ce que c'est, un paquet ?
Un programme, et des fichiers (dossier debian/) qui décrivent le paquet :
control: décrit le paquet et ses dépendancesinstall: liste des fichiers et leur destinationchangelog: un historique de l'evolution du paquetrules: des trucs techniques pour compiler le paquetpostinst,prerm, ... : des scripts lancés quand le paquet est installé, désinstallé, ...
Mettre à jour les paquets
apt update- récupère la liste des paquets depuis les dépots
apt full-upgrade- calcule et lance la mise à jour de tous les paquets
- (anciennement appelé :
apt dist-upgrade)
- Moins utilisé :
apt upgrade- mise à jour "safe", sans installer/supprimer de nouveaux paquets
- en général,
full-upgradeest okay
N.B. : pour les moldus dans la vraie vie, il y a des interfaces graphiques pour gérer tout ça sans ligne de commande, mais ici on présente les détails techniques
Les dépots
Les dépots de paquets sont configurés via /etc/apt/sources.list et les fichiers du dossier /etc/apt/sources.list.d/.
Exemple :
deb http://ftp.debian.fr/debian/ stretch main contrib
stretchest le nom actuel de la distributionmainetcontribsont des composantes à utiliser- le protocole est
http... l'authenticité des paquets est géré par un autre mécanisme (GPG)
Les versions de Debian
Debian vise un système libre et très stable
stable: paquets éprouvés et très stable (bien que souvent un peu vieux)testing: paquets en cours de test, comportant encore quelques bugsunstable(sid) : pour les gens qui aiment vivre dangereusement
Les versions tournent tous les ~2 ans environ
- l'ancienne
testingdevient la nouvellestable - le passage de version peut être un peu douloureux ... (quoiqu'en vrai c'est de + en + smooth)
Les versions de Debian
Basé sur les personnages de Toy Story
- 9,
stretch(oldoldoldstable) - 10,
buster(oldoldstable) - 11,
bullseye(oldstable) - 12,
bookworm(stable depuis juin 2023) - 13,
trixie(testing, "nextstable")

Naviguez dans les paquets debian en ligne
https://packages.debian.org/search

Les backports
- Un intermédiaire entre stabilité et nouveauté
- Fournissent des paquets venant de
testingenstable(sous debian) delatestversLTS(sous ubuntu) - À utiliser avec prudence (plus de risque de bug du a des incompatibilité de librairies ou autre)
Comparaison avec Ubuntu server
https://phoenixnap.com/blog/debian-vs-ubuntu-server
Comparaison APT avec le nouveau système de fichier SNAP de Canonical (Ubuntu)
https://www.baeldung.com/linux/snap-vs-apt-package-management-system
Comparaison avec RedHat (RHEL) / AlmaLinux
AlmaLinux (ou Rocky) remplace CentOS depuis que RedHat l'a torpillé : il s'agit d'une copie plus libre de RHEL globalement identique (les même paquets et configuration sont utilisés)
https://www.tecmint.com/redhat-vs-debian/
En pratique ...
- Si on a besoin de dépendances récentes, on les installe généralement avec le gestionnaire de paquet correspondant au language de notre app :
pip,npm,composer,carton,gem, ...
Et les autres distributions ?
- Redhat/Centos/AlmaLinux :
yum install <pkg>,yum search <keyword>,yum makecache,yum update, ... et maintenantdnf installnouvelle version de YUM
=> Très testé aussi (comme Debian)
- Archlinux :
pacman -S <pkg>,-Ss <keyword>,-Syu, ...
=> Très récent = moins testé et aussi plus vanilla (moins customizé)
Gérer des archives
tar (tape archive) permet de créer des archives (non compressées) qui rassemblent des fichiers.
## Créer une archive monarchive.tar
tar -cvf monarchive.tar file1 file2 folder2/ folder2/
## Désassembler une archive
tar -xvf monarchive.tar
gzip (gunzip) permet de compresser des fichiers (similaire aux .zip, .rar, ...)
## Compresser zblorf.scd
gzip zblorf.scd
## [...] le fichier a été compressé et renommé zblorf.scd.gz
## Decompresser le fichier :
gzip -d zblorf.scd.gz
tar peut en fait être invoqué avec -z pour générer une archive compressée
## Créer une archive compressée
tar -cvzf monarchive.tar.gz file1 file2 folder2/ folder2/
## Désassembler une archive
tar -xvzf monarchive.tar.gz
